<?php
/**
 * Created by PhpStorm.
 * Author: ljz
 * Date: 2023/5/09
 * Time: 12:01
 */

namespace App\store\models;


use App\common\models\BaseModel;
use Illuminate\Support\Facades\DB;

/**
 * Class OrderModel
 * @package app\common\models
 */
class GoodsModel extends BaseModel
{
    const table = 'goods';

    public function __construct() {

    }

    /**
     * 查询字段规则
     *
     * @return array
     */
    static public function rules()
    {
        return [];
    }

    /**
     * 添加/编辑 字段规则
     *
     * @return array
     */
    static public function modify_rules()
    {
        return [
            'store_id' => 'required|int', // 商户ID
            // 'goods_id' => 'required|int', // 商品ID,可选参数, 当使用商品id时视为编辑商品
            'type' => 'required|int', // 商品类型
            'title' => 'required|string|max:255', // 商品名称
            // 'subtitle' => 'required|string|max:255', // 商品副标题
            // 'short_title' => 'required|string|max:255', // 商品短标题
            'title_tag' => 'required|string|max:255', // 标题标签
            'thumb_url' => 'required|string|max:255', // 商品图片 url
            'is_thumb_details' => 'required|int', // 首图用于详情轮播图,必填, 0关 1开
            // 'video_url' => 'required', // 商品首图视频 url
            'categorys' => 'required', // 商品分类
            'group' => 'required', // 商品分组
            'is_support' => 'required', // 商品支持
            'details_url' => 'required', // 商品详情图片 url
            'spec_type' => 'required', // 商品规格类型
            'price' => 'required', // 商品售卖价格
            'stock' => 'required', // 商品库存
            'is_logistics' => 'required', // 物流支持
            'status' => 'required', // 商品状态,必填, 0 放至仓库, 1上架售卖
            'is_timing_removal' => 'required', // 定时下架,必填, 0 关, 1 开
            // 'removal_time' => 'required', // 下架时间,可选参数
        ];
    }

    /**
     * 查询字段规则
     *
     * @return array
     */
    static public function update_rules()
    {
        return [
            'store_id' => 'required|int', // 商户ID
            'goods_id' => 'required|int', // 商品ID
            'status' => 'required|int', // 商品类型,必填, 1上架, 2下架, 3删除
        ];
    }

    /**
     * 字段验证返回错误信息
     *
     * @return array
     */
    static public function message()
    {
        return [
            'store_id.required' => '商户ID不能为空',
            'store_id.int' => '商户ID数据类型错误',
            'status.required' => '商品状态不能为空',
            'status.int' => '商品状态数据类型错误',
            // 'goods_id.required' => '商品ID不能为空',
            // 'goods_id.int' => '商品ID数据类型错误',
            'type.required' => '商品类型ID不能为空',
            'type.int' => '商品类型数据类型错误',
            'title.required' => '商品名称不能为空',
            'title.max' => '商品名称长度超过限制',
            // 'subtitle.required' => '商品副标题不能为空',
            // 'subtitle.max' => '商品副标题长度超过限制',
            // 'short_title.required' => '商品短标题不能为空',
            // 'short_title.max' => '商品短标题长度超过限制',
            'title_tag.required' => '标题标签不能为空',
            'title_tag.max' => '标题标签长度超过限制',
            'thumb_url.required' => '商品图片url不能为空',
            'thumb_url.max' => '商品图片url长度超过限制',
            'is_thumb_details.required' => '首图用于详情轮播图开关不能为空',
            'is_thumb_details.int' => '首图用于详情轮播图开关数据类型错误',
            // 'video_url.required' => '商品首图视频url不能为空',
            'categorys.required' => '商品分类不能为空',
            'group.required' => '商品分组不能为空',
            'is_support.required' => '商品支持不能为空',
            'details_url.required' => '商品详情图片url不能为空',
            'spec_type.required' => '商品规格类型不能为空',
            'price.required' => '商品售卖价格不能为空',
            'stock.required' => '商品库存不能为空',
            'is_logistics.required' => '物流支持不能为空',
            'is_timing_removal.required' => '定时下架不能为空',
            // 'removal_time.required' => '下架时间不能为空',
        ];
    }

    /**
     * 数据库 - 查询商品列表
     * @param $page string //分页页数
     * @param $limit string //分页条数
     * @param $where_in_data array //in 查询条件 参数数组
     * @param $where_data array //查询条件 参数数组
     * @return array
     */
    static public function listed($page, $limit, $where_data = [], $where_in_data = [])
    {
        $query = DB::table(self::table)
            ->select('thumb', 'title', 'type', 'price', 'show_sales', 'stock')
            ->where($where_data);

        if (!empty($where_in_data)) {
            $query->whereIn('id', $where_in_data);
        }

        $data = $query->apiPaginate($page, $limit);
        return $data;
    }

    /**
     * 数据库 - 删除/下架商品
     *
     * @param $where_data array //查询条件 参数数组
     * @param $update_data array //更新 参数数组
     * @return array
     */
    static public function deleteds($where_data, $update_data)
    {
        $data = DB::table(self::table)
            ->where($where_data)
            ->update($update_data);

        return json_decode($data, true);
    }

    /**
     * 数据库 - 更新数据
     * @param $id   //商品ID
     * @param $data //参数数组
     * @return array
     */
    static public function updatedData($id, $data)
    {
        $data = DB::table(self::table)
            ->where('id','=', $id)
            ->update($data);

        return $data;
    }

    /**
     * 数据库 - 插入数据
     * @param $data //参数数组
     * @return array
     */
    static public function insertData($data)
    {
        $data = DB::table(self::table)->insert($data);
        return $data;
    }

}
